iT邦幫忙

2025 iThome 鐵人賽

DAY 5
2
Software Development

AI 慣老闆的 AI 學習歷程 - AI 時代的軟體工程的反思系列 第 5

AI 慣老闆的 AI學習日記 Day4 - 資料怎麼不見? Replit DB 崩潰記與 Schema Migration 血淚

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20250808/2014250972C5vrnneE.png

深夜 1 : 15,貝老闆在 Replit Console 狂敲 enter:

貝老闆(電話外放,語速 1.5 倍):「小可,小可!我照 AI 提示把 users 表加 email 欄位,結果原本留言資料都消失啦!😱」

小可(熊貓眼):「老、老闆……你剛剛是不是直接把資料庫砍掉重建?我才剛排版完訂閱頁面耶……」

貝老闆:「我只是跟 AI 說『新增欄位』,它就把整個 DB 重新建啦!資料去哪了?」

(掛電話,立即撥給好威)

好威(啜咖啡):「兄弟,你把改 DB Schema當成改 Excel 嘛?先備份、再 Migration,懂?」

貝老闆:「但 AI 不是會處理嗎?」

好威:「AI 不是你肚子裡的蛔蟲,你沒描述『保留舊資料』它就以為可整碗打掉重練。」😂

好威解析

  1. Replit DB 是 Key‑Value Store:沒有版本化 DDL,任何結構變動都像把舊倉庫直接搬家。若你沒另存備份,覆寫就成了事實。
  2. AI 只能根據指令行事:Prompt 沒寫「請先匯出所有資料做備份」→ AI 不會自己猜。工程師平常用 Migration 工具(如 Alembic、Prisma migrate)就把這些步驟腳本化,AI 也需要明確腳本描述。
  3. Schema 不是一次到位:業務天天變,結構必須可演化,因此更要有明確版本號與回滾策略。

🔍 概念拆解

1️⃣ Schema Modeling(結構設計)

在正式收集 Email 之前,先畫出 Entity‑Relationship Diagram,釐清 users、subscribers 等實體與欄位。良好的 Schema 可減少重複與未來修改成本。若你只是把 Key 當字串塞入,很快就會被「欄位散落各地」的技術債綁死。實務上建議:

  • 先在 Notion/Miroboard 畫出資料流。
  • 與利害關係人或團隊對齊命名與必要欄位。
  • 不同的開發語言有各自常用的工具,例如: JSON Schema 或 Prisma Schema,可以請 AI 幫忙轉檔、驗證範例資料。透過這些步驟,AI 就能依據清晰模型產出一致的 CRUD 程式,降低錯誤率。

2️⃣ Migration Strategy(演進策略)

當結構需要改動時,正確流程應是:備份 → 撰寫 Migration → 執行 → 驗證 → Commit。舉 Python 常用的 ORM tool Alembic 為例:它會自動產生 upgrade/downgrade 函式;你可叫 AI:「產生一支 Alembic revision,新增 email 欄位且將既有 contact 值搬移過去」。如此 AI 會同時生成 SQL 與資料遷移腳本,而不是砍掉重來。若使用 Replit DB,最少也要:

  • dump() 將 JSON 備份到檔案。
  • 讀取備份,新增鍵值。
  • 覆寫前做 diff 驗證。

記住:如果上面的都聽不懂,就先請 AI 講解給你聽!

3️⃣ Prompt‑Driven DB Ops(指令溝通)

AI 助手並非 DBA,它需要上下文。給 AI Prompt 時,務必包含:

  • 目標:保留既有資料、無損升級。
  • 環境限制:Replit DB 無事務、容量限制 50 MB。
  • 備援方案:若失敗則回滾至 backup‑20250808.json。
  • 驗證條件:users.count 必須保持一致。如此 AI 會推論出「先備份 → 修改 → 驗證」的腳本,並提示可能風險。對新手而言,與其說「幫我加欄位」,不如先問:「我想加欄位但要保留資料,步驟有哪些?請給我可複製貼上、可回滾的指令。」

💡 Takeaways

  • 資料結構就是地基:房子要加一間房先確認承重牆,同理新增欄位前要盤點依賴,聽不懂沒關係,可以問問 AI 在資料欄位修改前需要注意什麼。AI 能快速產生程式碼,但不能替你做決策。學會畫 ERD、寫 Schema 讓 AI 幫你生成更可靠的代碼。
  • 備份是遷移的保險:無論 MySQL 還是簡易 KV,先備份再修改是不變鐵律。告訴 AI 備份路徑與檔名,它就能把保險流程自動化。
  • 清晰 Prompt=良好 SOP:把你腦中隱性假設寫進 Prompt,例如「資料筆數需完全一致」「錯誤時自動回滾」。這就像把 SOP 寫在 README,AI 讀得懂,自然不會亂來。

精煉重點:

  • Schema 先設計,貿然改動十倍返工。(這時候還是先請教工程師朋友,不然就是請教 AI)
  • Migration 前先備份,AI 也需要流程指示。🛡️

今日提問

你曾因「偷偷改表結構」導致資料消失嗎?分享你的災難瞬間,或留言告訴我們你會如何向 AI 下指令來避免!

Prompt 小作業

試著寫一段 Prompt:
「我要在 Replit DB 中新增 email 欄位,保留所有既有 users 資料並生成可回滾腳本,請用 Python 示範。」
貼到 AI 後觀察它產出的步驟是否含備份與驗證,再留言你的結果!


上一篇
AI 慣老闆的 AI學習日記 Day3 - Preview 沒問題,Production 大翻車—環境差異的教訓
下一篇
AI 慣老闆的 AI學習日記 Day5 - 「回不去啊!」Replit 版本黑洞(Git Init & Commit 救援
系列文
AI 慣老闆的 AI 學習歷程 - AI 時代的軟體工程的反思32
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言